package com.yangming.common.wxpay;

import com.yangming.common.base.Constants;
import com.yangming.common.utils.SpringUtil;

import java.util.UUID;

/**
 * @author PengShuiMing
 * @create 2018-09-11
 **/
public class WXUtil {
    /** 微信支付回调支付成功，返回成功结果 */
    public static final String WX_PAY_SUCCESS = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[ok]]></return_msg></xml>";
    /** 微信支付回调支付失败，返回失败结果 */
    public static final String WX_PAY_FAIL = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[result_code is FAIL]]></return_msg></xml>";
    /** 微信支付回调支付sign验证失败，返回sign验证失败结果 */
    public static final String WX_PAY_SIGN_FAIL = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[check signature FAIL]]></return_msg></xml>";
    /** 微信支付回调地址路径 */
    public static final String NOTIFY_URL = "/pay/notifyCallback";
    /** 微信获取微信用户授权后用户信息 地址路径 */
    public static final String OAUTH2_USERINFO_URL = "/wx/getOAuth2UserInfo.do";
    /** 微信官方api接口 */
    public static final String URL_OAUTH2 = "https://open.weixin.qq.com/connect/oauth2/authorize?";
    /** 交易类型 ：jsapi代表微信公众号支付 */
    public static final String TRADE_TYPE = "JSAPI";

    /** 获取微信openId URL  */
    public String getWxOpenIdUrl(String toUrl){
        WXProperties wxProperties = SpringUtil.getBeanByClass(WXProperties.class);
        StringBuffer url = new StringBuffer();
        url.append(URL_OAUTH2)
                .append("appid=").append(wxProperties.getAppId())
                .append("&redirect_uri=").append(wxProperties.getRedirectUri())
                .append("&response_type=code")
                .append("&scope=").append(wxProperties.getScope())
                .append("&state=").append(toUrl)
                .append("#wechat_redirect");
        return url.toString();
    }

    /**
     * 获得微信支付随机码
     * @return
     * Date:2017年12月4日上午9:50:48
     * @author 吉文剑
     */
    public static String getNonceStr(){
        return UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    }

}
